/**
* Author: fulishang
* Create Time  : 2016年4月24日,下午9:43:43
* Modify Time :
* Desc  : 
*/
package com.sam.hr.common.dao.impl;

import java.io.Serializable;
import java.util.List;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.sam.hr.common.dao.BaseDao;

public class BaseDaoHibernate3<T> extends HibernateDaoSupport implements BaseDao<T>{

	//根据id加载实体
	public T get(Class<T> entityClazz, Serializable id) {
		return getHibernateTemplate().get(entityClazz, id);
	}

	//保存实体
	public Serializable save(T entity) {
		return getHibernateTemplate().save(entity);
	}

	//更新实体
	public void update(T entity) {
		getHibernateTemplate().saveOrUpdate(entity);
	}

	//删除实体
	public void delete(T entity) {
		getHibernateTemplate().delete(entity);
	}

	//根据id删除实体
	public void delete(Class<T> entityClazz, Serializable id) {
		delete(get(entityClazz, id));
	}

	//获取所有的记录
	@SuppressWarnings("unchecked")
	public List<T> findAll(Class<T> entityClazz) {
		return (List<T>)getHibernateTemplate().find("select en from " + entityClazz.getSimpleName() + " en");
	}

	//获取记录总数
	@SuppressWarnings("unchecked")
	public long findCount(Class<T> entityClazz) {
		List<Long> list = (List<Long>) getHibernateTemplate().find("select count(*) from " + entityClazz.getSimpleName() + " en");
		return list.get(0);
	}

	
	
}
